# -*- coding: utf-8 -*-

'''
PyWAK jQuery Mobile组件
用于快速安装jQuery Mobile
https://gitee.com/daze456/PyWAK/
'''

import pyhtml


def head():
    '''
    jQuery Mobile的head部分
    这个一定要放到head里
    '''
    return '''  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link rel="stylesheet" href="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.css" />
  <script src="https://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>'''


def page(src, dialog=False):
    '''
    jQuery Mobile的page部分
    src: 页面源码
    dialog: 是否为对话框
    '''
    if dialog == False:
        return '''<div data-role="page" style="background-color:white;">
'''+src+'''
</div>'''
    else:
        return '''<div data-role="page" data-dialog="true">
'''+src+'''
</div>'''


def pagehead(src):
    '''
    页眉
    src: 源码
    '''
    return '''<div data-role="header" data-position="fixed">
'''+src+'''
</div>'''


def pagemain(src):
    '''
    页面
    src: 源码
    '''
    return '''<div data-role="main" class="ui-content">
'''+src+'''
</div>'''


def pagefoot(src):
    '''
    页脚
    src: 源码
    '''
    return '''<div data-role="footer" data-position="fixed">
'''+src+'''
</div>'''


def navbar(src):
    '''
    建立导航栏
    src: 源码，完整的HTML无序列表
    '''
    return '''<div data-role="navbar">
'''+src+'''
</div>'''


def lst(src, t="ul", searchbox=False):
    '''
    列表
    src: HTML列表，就是内容为一堆li的多行变量，必须
    t: 类型，ul无序ol有序
    searchbox: 是否加入搜索框
    '''
    if searchbox:
        src = '''
        <form class="ui-filterable">
        <input id="myFilter" data-type="search">
        </form>
        <'''+t+''' data-role="listview" data-filter="true" data-input="#myFilter" data-inset="true">\n
        '''+src
    else:
        src = '''
        <'''+t+''' data-role="listview" data-inset="true">
        '''+src
    src = src+"\n</{}>".format(t)
    return src


def pli(src, src2=None, img=None, simg=None, url=None, url2=None, root="/", root2="/", rooti="/static/"):
    '''
    Python列表转jQuery Mobile列表
    src: Python列表，必须
    src2: Python列表，描述，请一一对应
    img: Python列表，大图（16x16以上），请一一对应
    simg: Python列表，小图（16x16），请一一对应
    url: Python列表，项目链接，和根链接拼接，请一一对应
    url2: Python列表，第二链接，和第二根链接拼接，请一一对应
    root: 根链接，默认为首页
    root2: 第二根链接，默认为首页
    rooti: img资源链接，默认为“/static/”
    '''
    for x in range(len(src)):
        if x == 0:
            fs = src[x]
            if img:
                fs = '<img src="{1}{0}">{2}'.format(
                    img[x], rooti, fs)
            if simg:
                fs = '<img src="{1}{0}" class="ui-li-icon">{2}'.format(
                    simg[x], rooti, fs)
            if url:
                fs = '<a href="{1}{0}/">{2}</a>'.format(
                    url[x], root, fs)
            if url2:
                if src2:
                    fs = '{3}\n<a href="{1}{0}/">{2}</a>'.format(
                        url2[x], root2, src2[x], fs)
                else:
                    fs = '{2}\n<a href="{1}{0}/"></a>'.format(
                        url2[x], root2, fs)
            s = "<li>{0}</li>".format(fs)
        else:
            fs = src[x]
            if img:
                fs = '<img src="{1}{0}">{2}'.format(
                    img[x], rooti, fs)
            if simg:
                fs = '<img src="{1}{0}" class="ui-li-icon">{2}'.format(
                    simg[x], rooti, fs)
            if url:
                fs = '<a href="{1}{0}/">{2}</a>'.format(
                    url[x], root, fs)
            if url2:
                if src2:
                    fs = '{3}\n<a href="{1}{0}/">{2}</a>'.format(
                        url2[x], root2, src2[x], fs)
                else:
                    fs = '{2}\n<a href="{1}{0}/"></a>'.format(
                        url2[x], root2, fs)
            s = "{1}\n<li>{0}</li>".format(fs, s)
    return s


def a(text, url="/", inline="false"):
    '''
    a类型按钮
    text: 文字，必须
    url: 链接，默认会前往首页
    inline: 是否内联，请使用字符串格式的true和false
    '''
    return '<a href="{0}" data-role="button" data-inline="{2}">{1}</a>'.format(url, text, inline)


def group(src, t="horizontal"):
    '''
    组合一堆按钮
    src: 一堆按钮
    t: 组合类型，1水平2垂直，也支持horizontal和vertical
    '''
    t = str(t)
    if t == '1':
        t = "horizontal"
    if t == '2':
        t = "vertical"
    return '<div data-role="controlgroup" data-type="{0}">\n{1}\n</div>'.format(t, src)


def backb(text="返回", inline="false"):
    '''
    返回按钮
    text: 文字
    inline: 是否内联，请使用字符串格式的true和false
    '''
    return '<a href="#" data-role="button" data-rel="back" data-inline="{0}">{1}</a>'.format(inline, text)


def about():
    '''
    返回关于页面
    '''
    # 渲染main
    src = '''<p>Zda <a href=https://gitee.com/daze456/PyWAK/>PyWAK</a> V1.0</p>
    <p>by <a href=https://gitee.com/daze456/>大泽</a></p>
    <p>为 Python WebAPP 而生
    <p>Powered by jQuery Mobile</p>
    <p>Copyright © 2020-2025 大泽. All Rights Reserved.</p>'''
    src = pyhtml.p(src)
    src = pagemain(src)
    # 渲染页面
    src = pagehead(pyhtml.h("关于PyWAK")) + "\n" + src
    src = page(src, dialog=True)
    # 渲染html
    src = pyhtml.main(src, head())
    return src
